/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package parismetro;

import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.scene.image.Image;
import javafx.scene.CustomNode;
import javafx.scene.text.Text;
import javafx.scene.input.MouseEvent;
import javafx.scene.text.Font;
import modele.*;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.TextAlignment;
import javafx.scene.CacheHint;

/**
 * @author Hadrien
 */
public class TicketsSpeciaux extends CustomNode {

    var group: Group;
    public var main: Main;
    def font1 = Font { size: 36, name: "Myriad Pro", embolden: true }
    def ticket_navigo = ButtonInfo {
                layoutX: 295;
                layoutY: 94;
                coul: Color.rgb(113, 206, 102);
                texte: "Coupon\nNavigo"
                action: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnNavigo", "optionSpeciaux");
                    var t: Decouverte = Decouverte { orderList: main.orderList };
                    main.orderList.addOrder(t);
                    main.optionEcran.previousStep = "speciaux";
                    main.changeContent("optionSpeciaux");
                }
                actionInfo: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnNavigoInfo", "dialog");
                    main.dialog.titre = "Information sur le coupon navigo";
                    main.dialog.corps = "Le passe Navigo permet le chargement des forfaits Mois "
                            "(valable du 1er au 31 du mois) et Semaine (valable du lundi au dimanche uniquement)."
                            "\n\nLe pass Navigo Découverte est utilisable par tous et immédiatement. "
                            "Le ticket délivré par l'automate doit ensuite être échangé contre une carte Navigo nominative dans un guichet RATP."
                            "Vous devez impérativement avant votre premier déplacement remplir la carte nominative en y inscrivant vos nom et prénom et en y ajoutant votre photo.";
                    main.dialog.largeur = 600;
                    main.dialog.hauteur = 350;
                    main.dialog.afficher = true;
                }
            }
    def mobilis = ButtonInfo {
                layoutX: 242;
                layoutY: 292;
                coul: Color.rgb(0, 142, 250);
                texte: "Mobilis"
                action: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnMobilis", "optionSpeciaux");
                    var t: Mobilis = Mobilis { orderList: main.orderList };
                    main.orderList.addOrder(t);
                    main.optionEcran.previousStep = "speciaux";
                    main.changeContent("optionSpeciaux");
                }
                actionInfo: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnMobilisInfo", "dialog");
                    main.dialog.titre = "Information sur le Ticket Mobilis";
                    main.dialog.corps = "Ce titre de transport est valable pour une journée pendant les heures de service (entre 5h30 et 1h environ)."
                            "\nLa journée entière est décomptée quelle que soit l'heure de début d'utilisation pendant les heures de service (entre 5h30 et 1h environ)."
                            "\n\nMobilis vous permet de voyager, dans la limite des zones choisies,sur les lignes de la RATP, de la SNCF Ile-de-France et sur les réseaux OPTILE, à l'exception des dessertes d'aéroports (Orlybus, Orlyval, Roissybus, Roissyrail et Orlyrail).";
                    main.dialog.largeur = 600;
                    main.dialog.hauteur = 350;
                    main.dialog.afficher = true;
                }
            }
    def ticket_jeune = ButtonInfo {
                layoutX: 390;
                layoutY: 473;
                coul: Color.rgb(255, 228, 1);
                texte: "Ticket\nJeune"
                action: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnTicketJeune", "optionSpeciaux");
                    var t: Jeune = Jeune { orderList: main.orderList };
                    main.orderList.addOrder(t);
                    main.optionEcran.previousStep = "speciaux";
                    main.changeContent("optionSpeciaux");
                }
                actionInfo: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnTicketJeuneInfo", "dialog");
                    main.dialog.titre = "Information sur le Ticket Jeune";
                    main.dialog.corps = "Le Ticket Jeunes Week-end est valable une journée, de 5h30 à 2h30 le lendemain (5h30 sur Noctilien)"
                            "\n\nCe titre de transport n'est pas valable sur les liaisons spécifiques desservant les aéroports :"
                            "\n- Aéroport d'Orly par le RER C ou par le RER B + Orlyval ou par Orlybus"
                            "\n- Aéroport Charles de Gaulle par RER B ou par Roissybus"
                            "\nToutefois, les détenteurs du Ticket Jeunes peuvent accéder à l'aéroport d'Orly par les lignes de bus 183 et 285, et à l'aéroport Charles de Gaulle par les lignes 350 et 351. (pour les zones concernées)."
                            "\n\nN'oubliez surtout pas d'inscrire la date du jour d'utilisation sur votre coupon, ainsi que votre nom et prénom. Vous pouvez également être amené à justifier votre âge.";
                    main.dialog.largeur = 700;
                    main.dialog.hauteur = 450;
                    main.dialog.afficher = true;
                }
            }
    def ticket_paris_visite = ButtonInfo {
                layoutX: 733;
                layoutY: 540;
                coul: Color.rgb(255, 29, 37);
                texte: "Paris\nVisite"
                action: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnParisVisite", "optionSpeciaux");
                    var t: ParisVisite = ParisVisite { orderList: main.orderList };
                    main.orderList.addOrder(t);
                    main.optionEcran.previousStep = "speciaux";
                    main.changeContent("optionSpeciaux");
                }
                actionInfo: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnParisVisiteInfo", "dialog");
                    main.dialog.titre = "Information sur le Ticket Paris Visite";
                    main.dialog.corps = "Paris Visite est un forfait valable 1, 2, 3 ou 5 jours consécutifs sur les zones 1 à 3 ou 1 à 6 (Attention : la journée commence à 5h30 et se termine à 5h30 le lendemain)."
                            "\n\nEn fonction des zones que vous choisissez, Paris Visite vous permet de voyager sur :"
                            "\n-les lignes du métro"
                            "\n-les lignes RER (RATP et SNCF)"
                            "\n-les lignes de bus d'Île-de-France (RATP et OPTILE) sauf sur celles des réseaux Jetbus, Allobus Roissy CDG, des circuits touristiques et enfin d'Air France"
                            "\n-la ligne Orlyval (reliant l'aéroport d'Orly au RER B)"
                            "\n-le funiculaire de Montmartre."
                            "\n\nPour rendre votre forfait Paris Visite valable, vous devez impérativement avant"
                            " votre premier déplacement remplir la carte nominative en y inscrivant vos"
                            " nom et prénom. Prenez également soin de reporter le numéro de série de cette"
                            " carte sur votre coupon magnétique. Enfin, si cela n’a pas déja été fait, inscrivez"
                            " sur le coupon magnétique les dates de début et de fin de validité.\nUne fois identifiés,"  
                            " le coupon magnétique et la carte nominative sont personnels et ne sont pas cessibles.";
                    main.dialog.largeur = 800;
                    main.dialog.hauteur = 500;
                    main.dialog.afficher = true;
                }
            }
    def bouton_annuler_tout = Group {
                layoutX: 10;
                layoutY: 644;
                //effect: shadow;
                content: [
                    Rectangle {
                        height: 95
                        width: 100
                        arcWidth: 15, arcHeight: 15
                        fill: Color.rgb(255, 115, 89)
                        stroke: Color.WHITE;
                        strokeWidth: 5;
                    }
                    Text {
                        layoutX: 10, layoutY: 40
                        font: Font { size: 22, embolden: true, name: "Myriad Pro" }
                        content: "Annuler\nTout"
                        textAlignment: TextAlignment.CENTER
                        fill: Color.WHITE
                    }
                ]
                onMousePressed: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnAnnulerTout", "accueil");
                    main.orderList.removeAll();
                    main.changeContent("accueil");
                }
            }
    def bouton_etape_prec = Group {
                layoutX: 120;
                layoutY: 644;
                //effect: shadow;
                content: [
                    Rectangle {
                        height: 95
                        width: 102
                        arcWidth: 15, arcHeight: 15
                        fill: Color.rgb(0, 113, 188)
                        stroke: Color.WHITE;
                        strokeWidth: 5;
                    }
                    Text {
                        layoutX: 1, layoutY: 40
                        font: Font { size: 19, embolden: true, name: "Myriad Pro" }
                        content: "Etape\nPrécédente"
                        textAlignment: TextAlignment.CENTER
                        fill: Color.WHITE
                    }
                ]
                onMousePressed: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnEtapePrec", "accueil");
                    main.changeContent("accueil");
                }
            }
    def bouton_pay = Group {
                layoutX: 5;
                layoutY: 435;
                visible: bind Main.orderList.orders.size() > 0
                content: [
                    Rectangle {
                        height: 100
                        width: 220
                        arcWidth: 20, arcHeight: 20
                        fill: Color.rgb(0, 169, 157)
                        stroke: Color.WHITE;
                        strokeWidth: 5;
                    }
                    Text {
                        layoutX: 30, layoutY: 40
                        font: Font { size: 32, embolden: true, name: "Myriad Pro" }
                        content: "Payer ma\ncommande"
                        textAlignment: TextAlignment.CENTER
                        fill: Color.WHITE
                    }
                ]
                onMousePressed: function(e: MouseEvent): Void {
                    main.logger.addEvent("speciaux", "btnPay", "paiement");
                    main.optionEcran.previousStep2 = "speciaux";
                    main.changeContent("paiement")
                }
            }
    var cart = Cart {
                orderList: main.orderList;
                layoutX: 5
                layoutY: 5
            }
    def backGround = ImageView {
                image: Image { url: "{__DIR__}icons/back_3-1.png" }
            //layoutX:0
            //layoutY:0
            }

    override public function create(): Node {
        group = Group { content: [
                        backGround, cart, bouton_etape_prec, bouton_annuler_tout,
                        ticket_paris_visite, ticket_jeune, mobilis, ticket_navigo,bouton_pay
                    ]
                    cache:true;
                    cacheHint: CacheHint.SPEED;
                }
        return group;
    }

}
